package mysql8学习.高级.第11章_数据库的设计规范之范式;

/**
 * 2.7小结
 * 关于数据表的设计，有三个范式要遵循。
 * (1) 第一范式(1NF) ，确保每列保持原子性
 *  数据库的每一列都是不可分割的原子数据项，不可再分的最小数据单元，
 *  而不能是集合、数组、记录等非原子数据项。
 * (2)第二范式(2NF) ，确保每列都和主键完全依赖
 *   尤其在复合主键的情况下，非主键部分不应该依赖于部分主键。
 * (3)第三范式(3NF) 确保每列都和主键列直接相关，而不是间接相关
 *
 * 范式的优点:数据的标准化有助于消除数据库中的数据冗余，
 *        第三范式(3NF)通常被认为在性能、扩展性和数据完整性方面达到了最好的平衡。
 *
 * 范式的缺点:范式的使用，可能降低查询的效率。
 *         因为范式等级越高，设计出来的数据表就越多、越精细，数据的冗余度就越低，
 *         进行数据查询的时候就可能需要关联多张表,这不但代价昂贵，也可能使一些索引策略无效。
 *
 * 范式只是提出了设计的标准，实际上设计数据表时，未必一定要符合这些标准。
 * 开发中，我们会出现为了性能和读取效率违反范式化的原则，
 * 通过增加少量的冗余或重复的数据来提高数据库的读性能，
 * 减少关联查询, join 表的次数，实现空间换取时间的目的。
 * 因此在实际的设计过程中要理论结合实际，灵活运用。
 *
 * 范式本身没有优劣之分，只有适用场景不同。没有完美的设计，只有合适的设计，我们在数据表的设计中，
 * 还需要根据需求将范式和反范式混合使用。
 *
 */
public class C4_前三范式小结 {
}


